import store from "@/store";

const errorHandler = (err, vm, info) => {
	console.log("添加err");
  if (err.isAxiosError) {
	  console.log("6----------->");
    // axios 请求错误
    // 收集错误日志
    store.dispatch("errorLogs/addErrorLog", {
      message: {
        msg: err.error,
        info: err.status,
        url: err.path,
      },
      stack: err,
    });
    console.log("axios的err", err);
  } else {
    // js 语法错误
    console.log("err", err);
    const componentPath = extractComponentPath(err.stack);
    store.dispatch("errorLogs/addErrorLog", {
      message: {
        msg: err.toString(),
        info: info,
        url: componentPath,
      },
      stack: err.stack,
    });
  }
};

function extractComponentPath(stackTrace) {
  // 从堆栈信息中提取组件路径的逻辑
  // 例如，可以使用正则表达式来匹配组件路径的信息
  const match = stackTrace.match(/\((.*):[0-9]+:[0-9]+\)/);
  if (match) {
    return match[1]; // 返回匹配到的路径信息
  } else {
    return "Unknown"; // 如果无法匹配到路径信息，则返回未知路径
  }
}

export default errorHandler;
